Armadillo: An Open Source C++ Linear Algebra Library for Fast Prototyping and Computationally Intensive Experiments
نویسنده
چکیده
In this report we provide an overview of the open source Armadillo C++ linear algebra library (matrix maths). The library aims to have a good balance between speed and ease of use, and is useful if C++ is the language of choice (due to speed and/or integration capabilities), rather than another language like Matlab or Octave. In particular, Armadillo can be used for fast prototyping and computationally intensive experiments, while at the same time allowing for relatively painless transition of research code into production environments. It is distributed under a license that is applicable in both open source and proprietary software development contexts. The library supports integer, floating point and complex numbers, as well as a subset of trigonometric and statistics functions. Various matrix decompositions are provided through optional integration with LAPACK, or one its high-performance drop-in replacements, such as MKL from Intel or ACML from AMD. A delayed evaluation approach is employed (during compile time) to combine several operations into one and reduce (or eliminate) the need for temporaries. This is accomplished through C++ template meta-programming. Performance comparisons suggest that the library is considerably faster than Matlab and Octave, as well as previous C++ libraries such as IT++ and Newmat. This report reflects a subset of the functionality present in Armadillo v2.4. Armadillo can be downloaded from: • http://arma.sourceforge.net If you use Armadillo in your research and/or software, we would appreciate a citation to this document. Please cite as: • Conrad Sanderson. Armadillo: An Open Source C++ Linear Algebra Library for Fast Prototyping and Computationally Intensive Experiments. Technical Report, NICTA, 2010. Armadillo: An Open Source C++ Linear Algebra Library NICTA Technical Report
منابع مشابه
An open source C++ implementation of multi-threaded Gaussian mixture models, k-means and expectation maximisation
Modelling of multivariate densities is a core component in many signal processing, pattern recognition and machine learning applications. The modelling is often done via Gaussian mixture models (GMMs), which use computationally expensive and potentially unstable training algorithms. We provide an overview of a fast and robust implementation of GMMs in the C++ language, employing multi-threaded ...
متن کاملImplementation of Simplicial Complexes for CPA Functions in C++11 using the Armadillo Linear Algebra Library
Continuous, piecewise affine (CPA) functions can be algorithmically parameterized to deliver Lyapunov functions for compact invariant sets. We discuss flexible structures and algorithms to manipulate CPA functions for these purposes and discuss their implementation in C++11 using the Armadillo linear algebra library. Especially, we discuss some of the new language features in C++11 that lead to...
متن کاملA Practical Univariate Polynomial Composition Algorithm
We revisit a divide-and-conquer algorithm, originally described by Brent and Kung for composition of power series, showing that it can be applied practically to composition of polynomials in Z[x] given in the standard monomial basis. We offer a complexity analysis, showing that it is asymptotically fast, avoiding coefficient explosion in Z[x]. The algorithm is straightforward to implement and p...
متن کاملCoCoA and CoCoALib: Fast Prototyping and Flexible C++ Library for Computations in Commutative Algebra
The CoCoA project began in 1987, and conducts research into Computational Commutative Algebra (from which its name comes) with particular emphasis on Gröbner bases of ideals in multivariate polynomial rings, and related areas. A major output of the project is the CoCoA software, including the CoCoA-5 interactive system and the CoCoALib C++ library. The software is open-source (GPL v.3), and und...
متن کاملRcppArmadillo: Accelerating R with high-performance C++ linear algebra
The R statistical environment and language has demonstrated particular strengths for interactive development of statistical algorithms, as well as data modelling and visualisation. Its current implementation has an interpreter at its core which may result in a performance penalty in comparison to directly executing user algorithms in the native machine code of the host CPU. In contrast, the C++...
متن کامل